#ifndef __MAIN_H_
#define __MAIN_H_

#ifdef __cplusplus
extern "C"
{
#endif

#include "stm32f10x.h"

    typedef struct tagStatus
    {
        uint16_t temperAdcVal;         ///< 烙铁头温度的ADC采样值
        uint16_t heatPwmVal;           ///< 加热控制的PWM占空比
        uint16_t ntcAdcVal;            ///< NTC电阻的ADC采样值
        uint16_t vinAdcVal;            ///< 输入电源的ADC采样值
        uint8_t royEcdVal;             ///< 记录旋转编码器的值,0位无动作,'L'为左转,'R'为右转
        float targetTemper;            ///< 设定的温度
        float currTemper;              ///< 当前温度
        float showTemper;              ///< 当前温度
        float temperVolt;              ///< 烙铁头温度的电压
        float ntcVolt;                 ///< NTC电阻上的分压
        float vinVolt;                 ///< 输入电源电压
        PidParamTypeDef pid;           ///< PID算法的相关参数
        KalmanTypeDef kalman;          ///< Kalman滤波算法相关参数
        KalmanTypeDef kalmanShowTemp;  ///< Kalman滤波算法相关参数
    } StatusTypeDef;

    enum Temperature
    {
        // 默认温度控制值（建议焊接温度：300-380°C）
        eTemper_Adjust = 150,  // 最低可选温度
        eTemper_Max = 400,     // 最大可选温度
        eTemper_Sleep = 100,   // 睡眠模式下的温度
        eTemper_Add = 50,      // 强力模式下的温度升高值

        // 默认烙铁头温度校准值
        eTemperAdcValue_100 = 500,        // 100℃时的ADC值
        eTemperAdcValue_200 = 1000,       // 200℃时的ADC值
        eTemperAdcValue_300 = 1350,       // 300℃时的ADC值
        eTemperAdcValue_420 = 1825,       // 420℃时的ADC值
        eTemperAdcValue_MaxLimit = 1850,  // 最高限制温度的ADC值
    };

    extern StatusTypeDef g_Stat;
    extern QueueHandle_t xHandlerQueueRoyEcd;
    extern Button royEcdButton;

#ifdef __cplusplus
}
#endif

#endif  // #ifndef __MAIN_H_
